/**
 * 函数的扩展
 * 
 * 1) 函数的默认值
 * 
 * 2) rest参数 ...
 * 
 * 1>...参数名必须放在参数最后
 * 
 * 2>值为剩余参数组成的数组
 * 
 * 3) 箭头函数
 * 
 *  省略
 * 
 *  1>只有一个参数 ，()可以省略
 * 
 *  2>{}内的代码只有一行，{}可以省略
 * 
 *  3>{}省略了，相当于在这行代码前加上return
 * 
 *  箭头函数的特点：
 * 
 *   1>没有arguments  rest参数 ...
 * 
 *   2>不能当做构造函数来使用
 * 
 *   普通函数和构造函数的区别：构造函数用关键字new来调用
 * 
 *   3>this指向问题  ES6 --> 函数定义时所在的对象  ES5 ---> 指向调用对象
 * 
 */

//  function ajax(type){
//     type = type || 'get';  // 0 || 7  bug
//  }

//  function ajax(type=7){
//     console.log(type);
//  }

//  ajax(0)

 function login({name='wuming',pwd="123"}){
    console.log(name,pwd)
 }

 login({})

//  let {name='1'} = {name:undefined};

//  console.log(name)

// let arr = [1,2,3];
// let val = arr.map(item => item+2)

// let sum = arr.reduce((pre,cur) => pre+cur)

// console.log(sum);


// let Fun = (...params) => {
//     console.log(params);
// }

// // fun(1,2,3)

// new Fun();

// function Fun(){
//     console.log('fun')
// }

// Fun()
 

// let m = 'a';
// let obj = {
//     say(){
//         let say1 = function(){
//             console.log(this);
//         }

//         let say2 = () => {
//             console.log(this);
//         }

//         say1()

//         say2()
//     }
// }

// obj.say();

let count = 1;

let obj = {
    count:10,
    add(){
        let setCount1 = function(){
            console.log(this);
            console.log(this.count)
        }

        let setCount2 = () => {
            console.log(this);
            console.log(this.count);
        }

        setCount1();
        setCount2();
    }
}

obj.add();

